草庐IT

swift - 在 Swift 中迭代 NSMutableArray

全部标签

java - 在 Java 中迭代任何类型的泛型数组

如果有一个JavaCollection实例可能带有原始类型、泛型数组和/或可迭代集合,我想将泛型数组视为可迭代集合,但如何处理?例如以下伪java代码Listlist1;list1.add(newint[2]);list1.add(newString[3]);list1.add(newArrayList());for(Objecte:list1){if(einstanceofIterable){//Theint[2]andString[3]willnotfallinthiscasethatIwantitbe//Iteratewithine}}请指教如何使int[2]和String[3]

Java - HashSet 实现不支持 remove() 的迭代器的最佳方式

我有一个使用HashSet的类,我希望该类实现Iterable,但是我不希望类迭代器支持remove()方法。HashSet的默认迭代器是HashSet.KeyIterator,它是HashSet类中的私有(private)类,所以我不能简单地扩展它并且覆盖删除方法。理想情况下,我想避免为KeyIterator编写包装类,但我不知道如何才能以任何其他方式轻松简单地实现我自己的迭代器。有什么想法吗?干杯,皮特 最佳答案 java.util.Collections.unmodifiableSet(myHashSet).iterator(

java - 有没有办法多次迭代 HttpServletRequest.getAttributeNames() ?

我正在尝试记录HttpServletRequest属性集合的内容。我需要在servlet首次启动时执行此操作,并在servlet完成之前再次执行此操作。我这样做是为了了解一个笨拙且维护不善的servlet。因为我需要尽可能减少影响,所以servlet过滤器不是一个选项。所以问题来了。当servlet启动时,我将遍历HttpServletRequest.getAttributeNames()返回的枚举。但是,当我想再次遍历它时,getAttributeNames().hasMoreElements()返回“false”!我找不到任何方法来“重置”枚举。更糟糕的是,即使我使用HttpSer

java - 如何迭代 json 对象数组(gson)

我正在制作一款舰船防御游戏。我在获取航点数组时遇到问题。map包含JSON格式(使用GSON){"waypoints":{"ship":{"first_type":[[0,0],[5,7],[2,8],[4,4],[10,10],[12,0],[0,12],[12,8],[8,8]]},"boat":{"first_type":[[0,0],[5,7],[2,8],[4,4],[10,10],[12,0],[0,12],[12,8],[8,8]]}}}我的代码:jse=newJsonParser().parse(in);in.close();map_json=jse.getAsJson

java - 对字符串的迭代器进行排序

我有一个字符串迭代器。为了排序,我需要从中创建一个列表并使用Collections.sort(list)对其进行排序。有什么简单的方法可以对迭代器进行排序。 最佳答案 迭代器不是容器,它是一种遍历容器元素的实用程序。因此,如果您只能访问迭代器,则无法更改迭代器的创建者定义的迭代顺序。如果您无法更改原始容器,则必须将迭代器传递的元素收集到一个新的集合中,并在其中对它们进行排序。(了解迭代器的可能性的一个好方法是查看JDK类的源代码或实现自己的迭代器) 关于java-对字符串的迭代器进行排序

java - 为什么在 LinkedHashMap 中通过桶迭代比 HashMap 更快?

我费了很大劲才明白这一点。谷歌搜索,我找到了"HashMapiteratorhastoiteratethroughallthebucketsincludingemptybuckets"和"inLinkedHashMapalltheentriesaredoublylinked".如果是这种情况,为什么只有HashMap必须遍历空桶,而不是LinkedHashMap,尽管两者都是使用相同的桶概念实现的?所有的条目都是双向链接的,意思是“所有的桶和元素都是双向链接的”或者只是“元素是双向链接的”。请给我一张图表,解释LinkedHashMap中的双链接桶实现。非常感谢。

java - 如何以相反的顺序迭代 LinkedList 元素?

我是Java集合的新手,我的疑问是为什么我不能反向遍历链表中的元素。下面我将解释我做了什么,请澄清我的疑问。我为正向迭代创建了接口(interface)iterator,为反向迭代创建了listiterator。为什么向后迭代不起作用?我不能在同一个程序中使用iterator和listiterator接口(interface)来向前和向后迭代遍历一组元素吗?代码片段:importjava.util.*;classNewClass{publicstaticvoidmain(Stringargs[]){LinkedListobj=newLinkedList();obj.add("vino"

java - 迭代 List<String> 并修改 String

我不能用这种方式修改List的元素:for(Strings:list){s="x"+s;}执行后这个列表的代码元素没有改变如何用最简单的方式通过List实现modyfing的迭代。 最佳答案 由于String对象是不可变的,因此您无法更改正在迭代的值。此外,您不能修改在这样的循环中迭代的列表。执行此操作的唯一方法是使用标准循环遍历列表索引或使用ListIterator接口(interface):for(inti=0;i 关于java-迭代List并修改String,我们在StackOve

java - 数组、列表、集合和映射是可迭代的。还有什么?

即使只有List和Set实现了接口(interface)Iterable,我相信array,list,set和map都是所有iterable对象,因为我们可以通过foreach循环使用它们:for(Strings:newString[0]);for(Strings:newArrayList());for(Strings:newHashSet());for(Entryentry:newHashMap().entrySet());Map的情况可能有点不同,但让我们将其视为键值列表(它实际上是什么)。从可迭代的理解开始,我是否在以下方法中缺少类型?publicbooleanisIterabl

java - 我应该迭代一个 Java 集合来获取子集,还是应该先将它转换为数组然后迭代来获取它?

我正在调用一个API,它返回一个对象集合。我想获取对象的子集。我正在考虑两种解决方案。哪一个会给我更好的表现?根据我的理解,toArray()调用主要会遍历集合一次。如果那是真的,那么解决方案会更好吗?解决方案1-publicstaticListget(UUIDrecordid,intstart,intcount){Listnames=newArrayList();...Collectioncolumnnames=result.getColumnNames();intindex=0;for(UUIDcolumnname:columnnames){if((index>=start)&&(